package cn.iocoder.yudao.module.bill.controller.admin.bill.vo;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
public class BillImportVO {

    @ExcelProperty("账单标题")
    private String billTitle;

    @ExcelProperty("账单备注")
    private String billRemark;

    @ExcelProperty("账单金额")
    private BigDecimal billAmount;

    @ExcelProperty(value = "收支类型", converter = DictConvert.class)
    @DictFormat("bill_amount_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String amountType;

    @ExcelProperty("变动账户")
    private Long accountId;

    @ExcelProperty("一级分类")
    private String cate1;

    @ExcelProperty("二级分类")
    private String cate2;

    @ExcelProperty("账单标签")
    private String tags;

    @ExcelProperty("账单所属模板")
    private String templateId;

    @ExcelProperty(value = "账单类型", converter = DictConvert.class)
    @DictFormat("bill_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String billType;

    @ExcelProperty(value = "账单阶段", converter = DictConvert.class)
    @DictFormat("bill_stage") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String billStage;

    @ExcelProperty(value = "账单状态", converter = DictConvert.class)
    @DictFormat("bill_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String billStatus;

    @ExcelProperty(value = "是否为资产", converter = DictConvert.class)
    @DictFormat("bill_yes_or_no") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer hasProperty;

    @ExcelProperty("转账去向")
    private Long transAccountId;

    @ExcelProperty("账单时间")
    private LocalDateTime billTime;

    @ExcelProperty("外部说明")
    private String extRemark;

    @ExcelProperty("外部付款账户")
    private String extFromAccount;

    @ExcelProperty("外部付款人")
    private String extFromOwner;

    @ExcelProperty("外部收款账户")
    private String extToAccount;

    @ExcelProperty("外部收款人")
    private String extToOwner;

    @ExcelProperty("补充信息")
    private String extInfo;

    @ExcelProperty("账单来源")
    private String extBillSource;

    @ExcelProperty("外部参数")
    private String extParam;


    @ExcelProperty("资产名称")
    private String propertyName;

    @ExcelProperty("资产盘点时间")
    private LocalDateTime propertyCheckTime;

    @ExcelProperty(value = "资产类别", converter = DictConvert.class)
    @DictFormat("property_cate") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String propertyCate;

    @ExcelProperty("资产价值")
    private BigDecimal propertyValue;

    @ExcelProperty("资产备注")
    private String propertyRemark;

    @ExcelProperty(value = "资产状态", converter = DictConvert.class)
    @DictFormat("property_status")
    private String propertyStatus;

}